import React, { useRef, useEffect } from 'react';
import * as THREE from 'three';

const AxesHelper = ({ size = 10, labels = true, labelSize = 0.6, labelOffset = 0.2 }) => {
    return (
        <>
            {/* X轴 (红色) - 使用圆柱体 */}
            <mesh rotation={[0, 0, Math.PI / 2]} position={[size / 2, 0, 0]}>
                <cylinderGeometry args={[0.05, 0.05, size, 8]} />
                <meshBasicMaterial color="red" />
            </mesh>

            {/* X轴箭头 */}
            <mesh position={[size - 0.2, 0, 0]} rotation={[0, 0, -Math.PI / 2]}>
                <coneGeometry args={[0.15, 0.5, 8]} />
                <meshBasicMaterial color="red" />
            </mesh>

            {/* Y轴 (绿色) - 使用圆柱体 */}
            <mesh position={[0, size / 2, 0]}>
                <cylinderGeometry args={[0.05, 0.05, size, 8]} />
                <meshBasicMaterial color="green" />
            </mesh>

            {/* Y轴箭头 */}
            <mesh position={[0, size - 0.2, 0]}>
                <coneGeometry args={[0.15, 0.5, 8]} />
                <meshBasicMaterial color="green" />
            </mesh>

            {/* Z轴 (蓝色) - 使用圆柱体 */}
            <mesh rotation={[Math.PI / 2, 0, 0]} position={[0, 0, size / 2]}>
                <cylinderGeometry args={[0.05, 0.05, size, 8]} />
                <meshBasicMaterial color="blue" />
            </mesh>

            {/* Z轴箭头 */}
            <mesh position={[0, 0, size - 0.2]} rotation={[Math.PI / 2, 0, 0]}>
                <coneGeometry args={[0.15, 0.5, 8]} />
                <meshBasicMaterial color="blue" />
            </mesh>

            {labels && (
                <>
                    {/* X轴标签 - 使用两个交叉线表示X */}
                    <group position={[size + labelOffset, 0, 0]}>
                        <mesh rotation={[0, 0, Math.PI / 4]}>
                            <boxGeometry args={[labelSize, labelSize * 0.15, labelSize * 0.15]} />
                            <meshBasicMaterial color="red" />
                        </mesh>
                        <mesh rotation={[0, 0, -Math.PI / 4]}>
                            <boxGeometry args={[labelSize, labelSize * 0.15, labelSize * 0.15]} />
                            <meshBasicMaterial color="red" />
                        </mesh>
                    </group>

                    {/* Y轴标签 - 使用一个垂直线和一个斜线表示Y */}
                    <group position={[0, size + labelOffset, 0]}>
                        <mesh>
                            <boxGeometry args={[labelSize * 0.15, labelSize, labelSize * 0.15]} />
                            <meshBasicMaterial color="green" />
                        </mesh>
                        <mesh position={[labelSize * 0.3, labelSize * 0.3, 0]} rotation={[0, 0, Math.PI / 4]}>
                            <boxGeometry args={[labelSize * 0.6, labelSize * 0.15, labelSize * 0.15]} />
                            <meshBasicMaterial color="green" />
                        </mesh>
                    </group>

                    {/* Z轴标签 - 使用三条线表示Z */}
                    <group position={[0, 0, size + labelOffset]}>
                        <mesh position={[0, labelSize * 0.4, 0]}>
                            <boxGeometry args={[labelSize, labelSize * 0.15, labelSize * 0.15]} />
                            <meshBasicMaterial color="blue" />
                        </mesh>
                        <mesh position={[0, -labelSize * 0.4, 0]}>
                            <boxGeometry args={[labelSize, labelSize * 0.15, labelSize * 0.15]} />
                            <meshBasicMaterial color="blue" />
                        </mesh>
                        <mesh rotation={[0, 0, Math.PI / 4]}>
                            <boxGeometry args={[labelSize * 1.2, labelSize * 0.15, labelSize * 0.15]} />
                            <meshBasicMaterial color="blue" />
                        </mesh>
                    </group>
                </>
            )}
        </>
    );
};

export default AxesHelper; 